home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / msdos / raytrace / pov / gen / frgen13 / vector.hpp < prev   
Encoding:
C/C++ Source or Header  |  1991-05-02  |  1.9 KB  |  83 lines

  1. #ifndef __VECTOR_HPP
  2. #define __VECTOR_HPP
  3.  
  4. #include <math.h>
  5. #include <fstream.h>
  6.  
  7. class Vector {
  8.     public:
  9.       float x, y, z;
  10.  
  11.       Vector() {x = 0.0; y = 0.0; z = 0.0;}
  12.       Vector (float NewX, float NewY, float NewZ)
  13.            {x = NewX; y = NewY; z = NewZ;}
  14.  
  15.       friend Vector operator+ (Vector V1, Vector V2);
  16.       friend Vector operator- (Vector V1, Vector V2);
  17.       friend Vector operator- (Vector V);
  18.       friend Vector operator* (Vector V1, Vector V2);
  19.       friend float  operator% (Vector V1, Vector V2);
  20.       friend Vector operator* (float N, Vector V);
  21.       friend Vector operator* (Vector V, float N);
  22.       friend Vector operator/ (Vector V, float N);
  23.       friend Vector min (const Vector& V1, const Vector& V2);
  24.       friend Vector max (const Vector& V1, const Vector& V2);
  25.       friend float  mag (Vector V);
  26.  
  27.       friend ostream& operator<< (ostream& f, const Vector& V);
  28. };
  29.  
  30. inline float mag (Vector V)
  31. {
  32.     return (sqrt(V.x*V.x + V.y*V.y + V.z*V.z));
  33. }
  34.  
  35. inline Vector operator+ (Vector V1, Vector V2)
  36. {
  37.     return Vector (V1.x + V2.x, V1.y + V2.y, V1.z + V2.z);
  38. }
  39.  
  40. inline Vector operator- (Vector V1, Vector V2)
  41. {
  42.     return Vector (V1.x - V2.x, V1.y - V2.y, V1.z - V2.z);
  43. }
  44.  
  45. inline Vector operator- (Vector V)
  46. {
  47.     return Vector (-V.x, -V.y, -V.z);
  48. }
  49.  
  50. inline Vector operator* (Vector V1, Vector V2)
  51. {
  52.     Vector Temp;
  53.  
  54.     Temp.x = (V1.z * V2.y) - (V1.y * V2.z);
  55.     Temp.y = (V1.x * V2.z) - (V1.z * V2.x);
  56.     Temp.z = (V1.y * V2.x) - (V1.x * V2.y);
  57.  
  58.     return Temp;
  59. }
  60.  
  61. inline float operator% (Vector V1, Vector V2)
  62. {
  63.     return (V1.x*V2.x) + (V1.y*V2.y) + (V1.z*V2.z);
  64. }
  65.  
  66. inline Vector operator* (float N, Vector V)
  67. {
  68.     return Vector (N*V.x, N*V.y, N*V.z);
  69. }
  70.  
  71. inline Vector operator* (Vector V, float N)
  72. {
  73.     return Vector (N*V.x, N*V.y, N*V.z);
  74. }
  75.  
  76.  
  77. inline Vector operator/ (Vector V, float N)
  78. {
  79.     return Vector (V.x/N, V.y/N, V.z/N);
  80. }
  81.  
  82. #endif
  83.